

use "$path\Intermediary Data\localshock_dataforReg_v2.dta",clear



drop if prix_ht==.
drop  j j3
replace d_dieselr=resid_movav_diesel
xtset id daten
gen d_dieselrott=ln(diesel_rotterdam_euro)-ln(l1.diesel_rotterdam_euro)
drop diesel_rotterdam_euro resid_movav_diesel dprix1 

drop d_dieselr
gen d_dieselr=d_dieselrott

merge m:m id using  "$path\Intermediary Data\base_id_suff_stat_6Y"
keep if _m==3
drop _m

merge m:m id using  "$path\Intermediary Data\base_base_suff_stat_6Y_forinteractkurtfreq"
keep if _m==3
drop _m

******** RATIO
capture drop ratio
gen ratio=kurtosis/freq

drop num_obs
gen num_obs=_n-1

capture drop coeff1_reg
capture drop coeff2_reg
capture drop coeff_c_reg

capture drop se_coeff1_reg
capture drop se_coeff2_reg
capture drop df_reg
capture drop r2
capture drop r2_a


gen coeff1_reg=.
gen coeff2_reg=.
gen coeff_c_reg=.

gen se_coeff1_reg=.
gen se_coeff2_reg=.
gen df_reg=.
gen r2=.
gen r2_a=.




***** H=30 ****
capture drop f_prix_ht 
capture drop f_prix_ht_temp
gen f_prix_ht=0


foreach i of numlist 1/29 {
 
bysort id (daten):  gen f_prix_ht_temp=(log(prix_ht[_n+`i'])-log(prix_ht[_n-1]))/lt_effect
replace f_prix_ht=f_prix_ht_temp+f_prix_ht
capture drop  f_prix_ht_temp
di "Numéro itération :" `i'
}


foreach i of numlist 30 {
 
bysort id (daten):  gen f_prix_ht_temp=(log(prix_ht[_n+`i'])-log(prix_ht[_n-1]))/lt_effect
replace f_prix_ht=f_prix_ht_temp+f_prix_ht



areg f_prix_ht c.d_dieselr##c.ratio c.local_shock10##c.ratio c.m_dprix##c.ratio c.l.d_dieselr##c.ratio c.l2.d_dieselr##c.ratio c.l3.d_dieselr##c.ratio c.l4.d_dieselr##c.ratio ///
c.l5.d_dieselr##c.ratio ///
		c.l.local_shock10##c.ratio c.l2.local_shock10##c.ratio c.l3.local_shock10##c.ratio c.l4.local_shock10##c.ratio c.l5.local_shock10##c.ratio ///
	c.l.m_dprix##c.ratio  c.l2.m_dprix##c.ratio c.l3.m_dprix##c.ratio c.l4.m_dprix##c.ratio c.l5.m_dprix##c.ratio, absorb(id) vce(cluster daten)

	

	replace r2=e(r2)
replace r2_a=e(r2_a)

matrix test=r(table)
replace coeff1_reg=_b[d_dieselr] if num_obs==`i'
replace coeff2_reg=_b[c.d_dieselr#c.ratio] if num_obs==`i'
replace coeff_c_reg=_b[_cons] if num_obs==`i'


replace se_coeff1_reg=_se[d_dieselr] if num_obs==`i'
replace se_coeff2_reg=_se[c.d_dieselr#c.ratio] if num_obs==`i'
replace df_reg=e(df_r) if num_obs==`i'
capture drop  f_prix_ht_temp
di "Numéro itération :" `i'

preserve
keep coeff1_reg coeff2_reg r2 r2_a  se_coeff1_reg se_coeff2_reg df_reg num_obs
gen name="`i'"
gen charact="constrained"
keep if num_obs==30
save "$path\Graphs_Tables\Table2_col1.dta", replace
restore
}





***** Unconstrained kur and freq ****


capture drop ratio
gen ratio=kurtosis/freq

bysort id: gen first_obs=1 if _n==1

egen mean_kur_temp=mean(kur) if first_obs==1
egen mean_freq_temp=mean(freq) if first_obs==1
egen mean_kur=mean(mean_kur_temp)
egen mean_freq=mean(mean_freq_temp)
drop mean_kur_temp mean_freq_temp first_obs

gen kur_demean=kur/mean_kur
gen freq_demean=freq/mean_freq

drop num_obs
gen num_obs=_n-1

capture drop local_shock5 local_shock15 local_shock4 local_shock6 local_shock7 local_shock8
capture drop coeff1_reg
capture drop coeff2_reg
capture drop coeff3_reg
capture drop coeff_c_reg

capture drop se_coeff1_reg
capture drop se_coeff2_reg
capture drop se_coeff3_reg
capture drop df_reg
capture drop r2
capture drop r2_a


gen coeff1_reg=.
gen coeff2_reg=.
gen coeff3_reg=.
gen coeff_c_reg=.

gen se_coeff1_reg=.
gen se_coeff2_reg=.
gen se_coeff3_reg=.
gen df_reg=.

gen r2=.
gen r2_a=.


***** H=30 ****
capture drop f_prix_ht 
capture drop f_prix_ht_temp
gen f_prix_ht=0

foreach i of numlist 1/29 {
 
bysort id (daten):  gen f_prix_ht_temp=(log(prix_ht[_n+`i'])-log(prix_ht[_n-1]))/lt_effect
replace f_prix_ht=f_prix_ht_temp+f_prix_ht
capture drop  f_prix_ht_temp
di "Numéro itération :" `i'
}


foreach i of numlist 30 {
 
bysort id (daten):  gen f_prix_ht_temp=(log(prix_ht[_n+`i'])-log(prix_ht[_n-1]))/lt_effect
replace f_prix_ht=f_prix_ht_temp+f_prix_ht


areg f_prix_ht c.d_dieselr##(c.freq_demean c.kur_demean) c.local_shock10##(c.freq_demean c.kur_demean) c.m_dprix##(c.freq_demean c.kur_demean) c.l.d_dieselr##(c.freq_demean c.kur_demean) ///
 c.l2.d_dieselr##(c.freq_demean c.kur_demean) c.l3.d_dieselr##(c.freq_demean c.kur_demean) c.l4.d_dieselr##(c.freq_demean c.kur_demean) c.l5.d_dieselr##(c.freq_demean c.kur_demean) ///
		c.l.local_shock10##(c.freq_demean c.kur_demean)  c.l2.local_shock10##(c.freq_demean c.kur_demean) c.l3.local_shock10##(c.freq_demean c.kur_demean) c.l4.local_shock10##(c.freq_demean c.kur_demean) ///
		c.l5.local_shock10##(c.freq_demean c.kur_demean)	c.l.m_dprix##(c.freq_demean c.kur_demean)  c.l2.m_dprix##(c.freq_demean c.kur_demean) c.l3.m_dprix##(c.freq_demean c.kur_demean) ///
		c.l4.m_dprix##(c.freq_demean c.kur_demean) c.l5.m_dprix##(c.freq_demean c.kur_demean), absorb(id) vce(cluster daten)

	
	replace r2=e(r2)
replace r2_a=e(r2_a)
	
matrix test=r(table)
replace coeff1_reg=_b[d_dieselr] if num_obs==`i'
replace coeff2_reg=_b[c.d_dieselr#c.freq_demean] if num_obs==`i'
replace coeff3_reg=_b[c.d_dieselr#c.kur_demean] if num_obs==`i'
replace coeff_c_reg=_b[_cons] if num_obs==`i'

replace se_coeff1_reg=_se[d_dieselr] if num_obs==`i'
replace se_coeff2_reg=_se[c.d_dieselr#c.freq_demean] if num_obs==`i'
replace se_coeff3_reg=_se[c.d_dieselr#c.kur_demean] if num_obs==`i'
replace df_reg=e(df_r) if num_obs==`i'
capture drop  f_prix_ht_temp
di "Numéro itération :" `i'
preserve
keep coeff1_reg coeff2_reg coeff3_reg r2 r2_a  se_coeff1_reg se_coeff2_reg se_coeff3_reg df_reg num_obs
gen name="`i'"
gen charact="unconstrained"
keep if num_obs==30
save "$path\Graphs_Tables\Table2_col2.dta", replace
restore
}





***** PLACEBO***
***** CONSTRAINED 

capture drop ratio
gen ratio=kurtosis/freq

drop num_obs
gen num_obs=_n-1

capture drop local_shock5 local_shock15 local_shock4 local_shock6 local_shock7 local_shock8
capture drop coeff1_reg
capture drop coeff2_reg
capture drop coeff3_reg
capture drop coeff4_reg
capture drop coeff5_reg
capture drop coeff_c_reg

capture drop se_coeff1_reg
capture drop se_coeff2_reg
capture drop se_coeff3_reg
capture drop se_coeff4_reg
capture drop se_coeff5_reg
capture drop df_reg
capture drop r2
capture drop r2_a


gen coeff1_reg=.
gen coeff2_reg=.
gen coeff3_reg=.
gen coeff4_reg=.
gen coeff5_reg=.
gen coeff_c_reg=.

gen se_coeff1_reg=.
gen se_coeff2_reg=.
gen se_coeff3_reg=.
gen se_coeff4_reg=.
gen se_coeff5_reg=.
gen df_reg=.

gen r2=.
gen r2_a=.



****** H=30 ****

capture drop f_prix_ht 
capture drop f_prix_ht_temp
gen f_prix_ht=0

foreach i of numlist 1/29 {
 
bysort id (daten):  gen f_prix_ht_temp=(log(prix_ht[_n+`i'])-log(prix_ht[_n-1]))/lt_effect
replace f_prix_ht=f_prix_ht_temp+f_prix_ht
capture drop  f_prix_ht_temp
di "Numéro itération :" `i'
}


foreach i of numlist 30 {
 
bysort id (daten):  gen f_prix_ht_temp=(log(prix_ht[_n+`i'])-log(prix_ht[_n-1]))/lt_effect
replace f_prix_ht=f_prix_ht_temp+f_prix_ht


areg f_prix_ht c.d_dieselr##(c.ratio c.mean c.sd c.skewness) c.local_shock10##(c.ratio c.mean c.sd c.skewness) c.m_dprix##(c.ratio c.mean c.sd c.skewness) ///
 c.l.d_dieselr##(c.ratio c.mean c.sd c.skewness) c.l2.d_dieselr##(c.ratio c.mean c.sd c.skewness) c.l3.d_dieselr##(c.ratio c.mean c.sd c.skewness) ///
 c.l4.d_dieselr##(c.ratio c.mean c.sd c.skewness) c.l5.d_dieselr##(c.ratio c.mean c.sd c.skewness) ///
		c.l.local_shock10##(c.ratio c.mean c.sd c.skewness)  c.l2.local_shock10##(c.ratio c.mean c.sd c.skewness) c.l3.local_shock10##(c.ratio c.mean c.sd c.skewness) ///
		c.l4.local_shock10##(c.ratio c.mean c.sd c.skewness) c.l5.local_shock10##(c.ratio c.mean c.sd c.skewness) ///
	c.l.m_dprix##(c.ratio c.mean c.sd c.skewness)  c.l2.m_dprix##(c.ratio c.mean c.sd c.skewness) c.l3.m_dprix##(c.ratio c.mean c.sd c.skewness) c.l4.m_dprix##(c.ratio c.mean c.sd c.skewness) ///
	c.l5.m_dprix##(c.ratio c.mean c.sd c.skewness), absorb(id) vce(cluster daten)

	
	replace r2=e(r2)
replace r2_a=e(r2_a)
	
matrix test=r(table)
replace coeff1_reg=_b[d_dieselr] if num_obs==`i'
replace coeff2_reg=_b[c.d_dieselr#c.ratio] if num_obs==`i'
replace coeff3_reg=_b[c.d_dieselr#c.mean] if num_obs==`i'
replace coeff4_reg=_b[c.d_dieselr#c.sd] if num_obs==`i'
replace coeff5_reg=_b[c.d_dieselr#c.skewness] if num_obs==`i'
replace coeff_c_reg=_b[_cons] if num_obs==`i'


replace se_coeff1_reg=_se[d_dieselr] if num_obs==`i'
replace se_coeff2_reg=_se[c.d_dieselr#c.ratio] if num_obs==`i'
replace se_coeff3_reg=_se[c.d_dieselr#c.mean] if num_obs==`i'
replace se_coeff4_reg=_se[c.d_dieselr#c.sd] if num_obs==`i'
replace se_coeff5_reg=_se[c.d_dieselr#c.skewness] if num_obs==`i'
replace df_reg=e(df_r) if num_obs==`i'
capture drop  f_prix_ht_temp
di "Numéro itération :" `i'

preserve
keep coeff1_reg coeff2_reg coeff3_reg coeff4_reg coeff5_reg r2 r2_a  se_coeff1_reg se_coeff2_reg se_coeff3_reg se_coeff4_reg se_coeff5_reg df_reg num_obs
gen name="`i'"
gen charact="constrained"
keep if num_obs==30
save "$path\Graphs_Tables\Table2_col3.dta", replace
restore 

}

***** UNCONSTRAINED ****

drop num_obs
gen num_obs=_n-1

capture drop local_shock5 local_shock15 local_shock4 local_shock6 local_shock7 local_shock8
capture drop coeff1_reg
capture drop coeff2_reg
capture drop coeff3_reg
capture drop coeff4_reg
capture drop coeff5_reg
capture drop coeff6_reg
capture drop coeff_c_reg

capture drop se_coeff1_reg
capture drop se_coeff2_reg
capture drop se_coeff3_reg
capture drop se_coeff4_reg
capture drop se_coeff5_reg
capture drop se_coeff6_reg
capture drop df_reg
capture drop r2
capture drop r2_a


gen coeff1_reg=.
gen coeff2_reg=.
gen coeff3_reg=.
gen coeff4_reg=.
gen coeff5_reg=.
gen coeff6_reg=.
gen coeff_c_reg=.

gen se_coeff1_reg=.
gen se_coeff2_reg=.
gen se_coeff3_reg=.
gen se_coeff4_reg=.
gen se_coeff5_reg=.
gen se_coeff6_reg=.
gen df_reg=.
gen r2=.
gen r2_a=.

capture drop f_prix_ht
gen f_prix_ht=0



**** H=30 ***


drop num_obs
gen num_obs=_n-1

capture drop local_shock5 local_shock15 local_shock4 local_shock6 local_shock7 local_shock8
capture drop coeff1_reg
capture drop coeff2_reg
capture drop coeff3_reg
capture drop coeff4_reg
capture drop coeff5_reg
capture drop coeff6_reg
capture drop coeff_c_reg

capture drop se_coeff1_reg
capture drop se_coeff2_reg
capture drop se_coeff3_reg
capture drop se_coeff4_reg
capture drop se_coeff5_reg
capture drop se_coeff6_reg
capture drop df_reg
capture drop r2
capture drop r2_a


gen coeff1_reg=.
gen coeff2_reg=.
gen coeff3_reg=.
gen coeff4_reg=.
gen coeff5_reg=.
gen coeff6_reg=.
gen coeff_c_reg=.

gen se_coeff1_reg=.
gen se_coeff2_reg=.
gen se_coeff3_reg=.
gen se_coeff4_reg=.
gen se_coeff5_reg=.
gen se_coeff6_reg=.
gen df_reg=.
		gen r2=.
gen r2_a=.

capture drop f_prix_ht 
capture drop f_prix_ht_temp
gen f_prix_ht=0


foreach i of numlist 0/29 {
bysort id (daten):  gen f_prix_ht_temp=(log(prix_ht[_n+`i'])-log(prix_ht[_n-1]))/lt_effect
replace f_prix_ht=f_prix_ht_temp+f_prix_ht
capture drop  f_prix_ht_temp
di "Numéro itération :" `i'
}

foreach i of numlist 30 {
 
bysort id (daten):  gen f_prix_ht_temp=(log(prix_ht[_n+`i'])-log(prix_ht[_n-1]))/lt_effect
replace f_prix_ht=f_prix_ht_temp+f_prix_ht


areg f_prix_ht c.d_dieselr##(c.freq_demean c.kur_demean c.mean c.sd c.skewness) c.local_shock10##(c.freq_demean c.kur_demean c.mean c.sd c.skewness) ///
c.m_dprix##(c.freq_demean c.kur_demean c.mean c.sd c.skewness) ///
 c.l.d_dieselr##(c.freq_demean c.kur_demean c.mean c.sd c.skewness) c.l2.d_dieselr##(c.freq_demean c.kur_demean c.mean c.sd c.skewness) ///
 c.l3.d_dieselr##(c.freq_demean c.kur_demean c.mean c.sd c.skewness) ///
 c.l4.d_dieselr##(c.freq_demean c.kur_demean c.mean c.sd c.skewness) c.l5.d_dieselr##(c.freq_demean c.kur_demean c.mean c.sd c.skewness) ///
		c.l.local_shock10##(c.freq_demean c.kur_demean c.mean c.sd c.skewness)  c.l2.local_shock10##(c.freq_demean c.kur_demean c.mean c.sd c.skewness) ///
		c.l3.local_shock10##(c.freq_demean c.kur_demean c.mean c.sd c.skewness) ///
		c.l4.local_shock10##(c.freq_demean c.kur_demean c.mean c.sd c.skewness) c.l5.local_shock10##(c.freq_demean c.kur_demean c.mean c.sd c.skewness) ///
	c.l.m_dprix##(c.freq_demean c.kur_demean c.mean c.sd c.skewness)  c.l2.m_dprix##(c.freq_demean c.kur_demean c.mean c.sd c.skewness) c.l3.m_dprix##(c.freq_demean c.kur_demean c.mean c.sd c.skewness) ///
	c.l4.m_dprix##(c.freq_demean c.kur_demean c.mean c.sd c.skewness) c.l5.m_dprix##(c.freq_demean c.kur_demean c.mean c.sd c.skewness), absorb(id) vce(cluster daten)

	
		replace r2=e(r2)
replace r2_a=e(r2_a)
	
matrix test=r(table)
replace coeff1_reg=_b[d_dieselr] if num_obs==`i'
replace coeff2_reg=_b[c.d_dieselr#c.freq_demean] if num_obs==`i'
replace coeff3_reg=_b[c.d_dieselr#c.kur_demean] if num_obs==`i'
replace coeff4_reg=_b[c.d_dieselr#c.mean] if num_obs==`i'
replace coeff5_reg=_b[c.d_dieselr#c.sd] if num_obs==`i'
replace coeff6_reg=_b[c.d_dieselr#c.skewness] if num_obs==`i'
replace coeff_c_reg=_b[_cons] if num_obs==`i'


replace se_coeff1_reg=_se[d_dieselr] if num_obs==`i'
replace se_coeff2_reg=_se[c.d_dieselr#c.freq_demean] if num_obs==`i'
replace se_coeff3_reg=_se[c.d_dieselr#c.kur_demean] if num_obs==`i'
replace se_coeff4_reg=_se[c.d_dieselr#c.mean] if num_obs==`i'
replace se_coeff5_reg=_se[c.d_dieselr#c.sd] if num_obs==`i'
replace se_coeff6_reg=_se[c.d_dieselr#c.skewness] if num_obs==`i'
replace df_reg=e(df_r) if num_obs==`i'
capture drop  f_prix_ht_temp
di "Numéro itération :" `i'

preserve
keep coeff1_reg coeff2_reg coeff3_reg coeff4_reg coeff5_reg coeff6_reg r2 r2_a  se_coeff1_reg se_coeff2_reg se_coeff3_reg se_coeff4_reg se_coeff5_reg se_coeff6_reg df_reg num_obs
gen name="`i'"
gen charact="unconstrained"
keep if num_obs==30
save "$path\Graphs_Tables\Table2_col4.dta", replace
restore 
}



***** Format Table 2
clear
use "$path\Graphs_Tables\Table2_col1.dta"
append using "$path\Graphs_Tables\Table2_col2.dta"
append using "$path\Graphs_Tables\Table2_col3.dta"
append using "$path\Graphs_Tables\Table2_col4.dta"

gen id_col=_n

xpose, clear

drop if _n==1


capture drop col1
capture drop col2
capture drop col3
capture drop col4

gen col1=.
replace col1=v1[1] if _n==1
replace col1=v1[3] if _n==2
replace col1=v1[2] if _n==3
replace col1=v1[4] if _n==4
replace col1=v1[6] if _n==15

capture drop col2
gen col2=.
replace col2=v2[1] if _n==1
replace col2=v2[3] if _n==2
replace col2=v2[2] if _n==5
replace col2=v2[4] if _n==6
replace col2=v2[10] if _n==7
replace col2=v2[11] if _n==8
replace col2=v2[6] if _n==15


capture drop col3
gen col3=.
replace col3=v3[1] if _n==1
replace col3=v3[3] if _n==2
replace col3=v3[2] if _n==3
replace col3=v3[4] if _n==4
replace col3=v3[10]/100 if _n==9
replace col3=v3[11]/100 if _n==10
replace col3=v3[12] if _n==11
replace col3=v3[14] if _n==12
replace col3=v3[13] if _n==13
replace col3=v3[15] if _n==14
replace col3=v3[6] if _n==15


capture drop col4
gen col4=.
replace col4=v4[1] if _n==1
replace col4=v4[3] if _n==2
replace col4=v4[2] if _n==5
replace col4=v4[4] if _n==6
replace col4=v4[10] if _n==7
replace col4=v4[11] if _n==8
replace col4=v4[12]/100 if _n==9
replace col4=v4[14]/100 if _n==10
replace col4=v4[13] if _n==11
replace col4=v4[15] if _n==12
replace col4=v4[16] if _n==13
replace col4=v4[17] if _n==14
replace col4=v4[6] if _n==15

drop v1 v2 v3 v4


gen Var=""
replace Var="Shock" if _n==1
replace Var="Shock x Ratio (Kur./Freq.)" if _n==3
replace Var="Shock x Frequency" if _n==5
replace Var="Shock x Kurtosis" if _n==7
replace Var="Shock x Mean" if _n==9
replace Var="Shock x Standard Deviation" if _n==11
replace Var="Shock x Skewness" if _n==13
replace Var="R2" if _n==15



gen tstatcol1=.
gen tstatcol2=.
gen tstatcol3=.
gen tstatcol4=.



foreach i in 1 3 5 7 9 11 13 {
replace tstatcol1=col1[`i']/col1[`i'+1] if _n==`i'
replace tstatcol2=col2[`i']/col2[`i'+1] if _n==`i'
replace tstatcol3=col3[`i']/col3[`i'+1] if _n==`i' 
replace tstatcol4=col4[`i']/col4[`i'+1] if _n==`i' 
}

gen starscol1=""
gen starscol2=""
gen starscol3=""
gen starscol4=""


foreach i in 1 2 3 4 {
replace starscol`i'="***" if abs(tstatcol`i')>=2.58 & tstatcol`i'!=.
replace starscol`i'="**" if abs(tstatcol`i')<2.58 & abs(tstatcol`i')>=1.96 & tstatcol`i'!=.
replace starscol`i'="*" if abs(tstatcol`i')<1.96 & abs(tstatcol`i')>=1.64 & tstatcol`i'!=.
}

drop tstat*
rename col* coltemp*

foreach i in 1 2 3 4 {
replace coltemp`i'=round(coltemp`i', 0.001)
tostring coltemp`i', gen(coltempbis`i') force format("%9.3f")  
egen col`i'=concat(coltempbis`i' starscol`i')
}


rename col1 Constrained
rename col2 Unconstrained
rename col3 PlaceboConstrained
rename col4 PlaceboUnconstrained

keep  Var Constrained Unconstrained PlaceboConstrained PlaceboUnconstrained
order Var Constrained Unconstrained PlaceboConstrained PlaceboUnconstrained
drop if _n>15


save "$path\Graphs_Tables\Table2_Edited.dta", replace
